// 版权所有2009 Go作者。版权所有。
// 此源代码的使用受BSD样式
// 许可证的约束，该许可证可以在许可证文件中找到。

// 避免依赖strconv的简单转换。

package os

// itox将val（int）转换为十六进制字符串。
func itox(val int) string {
	if val < 0 {
		return "-" + uitox(uint(-val))
	}
	return uitox(uint(val))
}

const hex = "0123456789abcdef"

// uitox将val（单位）转换为十六进制字符串。
func uitox(val uint) string {
	if val == 0 { // 避免字符串分配
		return "0x0"
	}
	var buf [20]byte // 足够大，可以容纳64位的基值16+0x 
	i := len(buf) - 1
	for val >= 16 {
		q := val / 16
		buf[i] = hex[val%16]
		i--
		val = q
	}
	// val<16 
	buf[i] = hex[val%16]
	i--
	buf[i] = 'x'
	i--
	buf[i] = '0'
	return string(buf[i:])
}
